﻿Imports Microsoft.Office.Interop

'Imports Microsoft.Office.Interop

Public Class xtf_importarCliente_
    Event syncFin()
    Dim contador As Integer = 0

    Public Sub ImportarDatosDBF()
        pgb_general.Properties.Minimum = 0
        Dim cs As String = ""
        Dim file As String = ""
        Dim config_parametro As New cls_config_parametro_
        If System.IO.File.Exists(config_parametro.Buscar("dbfClientes").valor) Then
            cs = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                         "Data Source=" & config_parametro.valor & ";" & _
                         "Extended Properties=""Excel 8.0;HDR=YES"""
            file = config_parametro.valor
        Else
            Dim Dialog As New OpenFileDialog
            Dialog.Filter = "Microsoft Excel (*.xls)|*.dbf"
            If Dialog.ShowDialog = Windows.Forms.DialogResult.OK Then
                If Not System.IO.File.Exists(Dialog.FileName) Then
                    MsgBox("No se encontró el Libro: " & _
                            Dialog.FileName, MsgBoxStyle.Critical, _
                            "Ruta inválida")
                    Exit Sub
                End If
                cs = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                              "Data Source=" & Dialog.FileName & ";" & _
                              "Extended Properties=""Excel 8.0;HDR=YES"""
                file = Dialog.FileName
            Else
                RaiseEvent syncFin()
                Exit Sub
            End If
        End If


        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open(file)


        'Creo pais por defecto o selecciono el ultimo.
        Dim idpais As Integer
        Dim pais As New cls_pais_
        pais.CargarUltimo()
        If pais.idpais = 0 Then
            pais.nombre = "Argentina"
            pais.Nuevo(True)
            idpais = pais.idpais
        Else
            idpais = pais.idpais
        End If

        'Creo pais por defecto o selecciono el ultimo.
        Dim idsiglafiscal As Integer
        Dim siglafiscal As New cls_siglafiscal_
        siglafiscal.CargarUltimo()
        If siglafiscal.idsiglafiscal = 0 Then
            siglafiscal.nombre = "C.U.I.T."
            siglafiscal.Nuevo(True)
            idsiglafiscal = siglafiscal.idsiglafiscal
        Else
            idsiglafiscal = siglafiscal.idsiglafiscal
        End If

        Try
            Dim dtt_objeto As DataTable
            Dim dAdapter As New OleDb.OleDbDataAdapter("SELECT * FROM [TCUENTA$]", cs)
            dtt_objeto = New DataTable
            dAdapter.FillSchema(dtt_objeto, SchemaType.Source)
            For Each col As DataColumn In dtt_objeto.Columns
                col.DataType = GetType(String)
            Next
            dAdapter.Fill(dtt_objeto)


            'frm.Show(Me)
            pgb_general.Invoke(New UpdatePGBMAXCallback(AddressOf UpdatePGBMAX), dtt_objeto.Rows.Count)
            pgb_general.Properties.Maximum = dtt_objeto.Rows.Count
            Dim cliente As cls_cliente_
            For Each row In dtt_objeto.Rows
                cliente = New cls_cliente_
                If bol_detener Then Exit For
                If cliente.BuscarXsubCodigo1(row("CCOCL")) Then
                    'Modificacion
                    cliente.tercero.subcodigo1 = IIf(IsDBNull(row("CCOCL")), "", row("CCOCL"))
                    cliente.razonsocial = IIf(IsDBNull(row("CNOMB")), "", row("CNOMB"))

                    Dim direccion As cls_direccion_ = cliente.tercero.direccion_.Items(0)
                    direccion.domicilio = IIf(IsDBNull(row("CDIRE")), "", row("CDIRE"))
                    direccion.codigopostal = IIf(IsDBNull(row("CCOPO")), "", row("CCOPO"))
                    direccion.primario = True
                    Dim provincia As New cls_provincia_
                    If Not IsDBNull(row("CPROV")) Then
                        If provincia.BuscarXsubCodigo1(row("CPROV")) Then
                            direccion.idprovincia = provincia.idprovincia
                            direccion.idpais = provincia.idpais
                        Else
                            provincia.subcodigo1 = row("CPROV")
                            provincia.idpais = idpais
                            provincia.Nuevo(True)
                            direccion.idprovincia = provincia.idprovincia
                        End If
                    End If

                    Dim localidad As New cls_localidad_
                    If Not IsDBNull(row("CLOCA")) Then
                        If localidad.BuscarXnombre(row("CLOCA")) Then
                            direccion.idlocalidad = localidad.idlocalidad
                        Else
                            If direccion.idprovincia <> 0 Then
                                localidad.nombre = row("CLOCA")
                                localidad.idprovincia = direccion.idprovincia
                                localidad.Nuevo(True)
                                direccion.idlocalidad = localidad.idlocalidad
                            End If
                        End If
                    End If

                    'CLOCA = tercero.direccion.idlocalidad
                    'CPROV = tercero.direccion.idprovincia -> provincia.subcodigo1

                    Dim telefono As cls_telefono_ = cliente.tercero.telefono_.Items(0)
                    telefono.numero = IIf(IsDBNull(row("CTELE")), "", row("CTELE"))
                    telefono.primario = True

                    cliente.tercero.observaciones = IIf(IsDBNull(row("CATTE")), "", row("CATTE"))

                    If Not IsDBNull(row("CALTA")) Then
                        cliente.tercero.registro = New cls_registro_
                        cliente.tercero.registro.idusuariocreado = UsuarioLOG.idusuario
                        cliente.tercero.registro.fechamodificado = Now
                        cliente.tercero.registro.idusuariomodificado = UsuarioLOG.idusuario
                        cliente.tercero.registro.idregistroestado = 1
                        cliente.tercero.registro.idusuarioregistroestado = UsuarioLOG.idusuario
                        cliente.tercero.registro.fechacreado = row("CALTA")
                    End If
                    'CNACI = null

                    Dim vendedor_ As New cls_vendedor_
                    If Not IsDBNull(row("CPROD")) Then
                        If vendedor_.BuscarXsubCodigo1(row("CPROD")) Then
                            cliente.idvendedor = vendedor_.idvendedor
                        Else
                            vendedor_.tercero = New cls_tercero_
                            vendedor_.tercero.subcodigo1 = row("CPROD")
                            vendedor_.Nuevo(True)
                            cliente.idvendedor = vendedor_.idvendedor
                        End If
                    End If
                    'CSUBP = null

                    Dim cobrador_ As New cls_cobrador_
                    If Not IsDBNull(row("CCOBR")) Then
                        If cobrador_.BuscarXsubCodigo1(row("CCOBR")) Then
                            cobrador_.idcobrador = cobrador_.idcobrador
                        Else
                            cobrador_.tercero = New cls_tercero_
                            cobrador_.tercero.subcodigo1 = row("CCOBR")
                            cobrador_.Nuevo(True)
                            cliente.idcobrador = cobrador_.idcobrador
                        End If
                    End If

                    'CGRUP = null

                    Dim condicionIva_ As New cls_condicioniva_
                    If Not IsDBNull(row("CCOIV")) Then
                        If condicionIva_.BuscarXsubCodigo1(row("CCOIV")) Then
                            cliente.tercero.idcondicioniva = condicionIva_.idcondicioniva
                        Else
                            condicionIva_.subcodigo1 = row("CCOIV")
                            condicionIva_.idsiglafiscal = idsiglafiscal
                            condicionIva_.Nuevo(True)
                            cliente.tercero.idcondicioniva = condicionIva_.idcondicioniva
                        End If
                    End If

                    cliente.tercero.numeroducumento = IIf(IsDBNull(row("CNUIV")), "", row("CNUIV"))
                    'CMEMO = null
                    'If Not IsDBNull(row("CTELE")) Then
                    '    If row("CTELE") = "15-5334-9977" Then
                    '        MsgBox(contador)
                    '    End If
                    'End If

                    Dim formapago_ As New cls_formapago_
                    If Not IsDBNull(row("CFOPA")) Then
                        If formapago_.BuscarXsubCodigo1(row("CFOPA")) Then
                            cliente.idformapago = formapago_.idformapago
                        Else
                            formapago_.subcodigo1 = row("CFOPA")
                            formapago_.Nuevo(True)
                            cliente.idformapago = formapago_.idformapago
                        End If
                    End If
                    'CTARJ = null

                    Dim denominacion As New cls_denominacion_
                    If Not IsDBNull(row("CENCA")) Then
                        If denominacion.BuscarXnombre(row("CENCA")) Then
                            cliente.iddenominacion = denominacion.iddenominacion
                        Else
                            denominacion.nombre = row("CENCA")
                            denominacion.nombrecorto = row("CENCA")
                            denominacion.Nuevo(True)
                            cliente.iddenominacion = denominacion.iddenominacion
                        End If
                    End If

                    cliente.Modificar()
                Else
                    cliente = New cls_cliente_
                    cliente.tercero = New cls_tercero_

                    cliente.tercero.subcodigo1 = IIf(IsDBNull(row("CCOCL")), "", row("CCOCL"))
                    cliente.razonsocial = IIf(IsDBNull(row("CNOMB")), "", row("CNOMB"))

                    Dim direccion As New cls_direccion_
                    direccion.domicilio = IIf(IsDBNull(row("CDIRE")), "", row("CDIRE"))
                    direccion.codigopostal = IIf(IsDBNull(row("CCOPO")), "", row("CCOPO"))
                    direccion.primario = True
                    Dim provincia As New cls_provincia_
                    If Not IsDBNull(row("CPROV")) Then
                        If provincia.BuscarXsubCodigo1(row("CPROV")) Then
                            direccion.idprovincia = provincia.idprovincia
                            direccion.idpais = provincia.idpais
                        Else
                            provincia.subcodigo1 = row("CPROV")
                            provincia.idpais = idpais
                            provincia.Nuevo(True)
                            direccion.idprovincia = provincia.idprovincia
                        End If
                    End If

                    Dim localidad As New cls_localidad_
                    If Not IsDBNull(row("CLOCA")) Then
                        If localidad.BuscarXnombre(row("CLOCA")) Then
                            direccion.idlocalidad = localidad.idlocalidad
                        Else
                            If direccion.idprovincia <> 0 Then
                                localidad.nombre = row("CLOCA")
                                localidad.idprovincia = direccion.idprovincia
                                localidad.Nuevo(True)
                                direccion.idlocalidad = localidad.idlocalidad
                            End If
                        End If
                    End If

                    cliente.tercero.direccion_ = New cls_direccion_
                    cliente.tercero.direccion_.Items = New Collections.Generic.List(Of cls_direccion_)()
                    cliente.tercero.direccion_.Items.Add(direccion)

                    'CLOCA = tercero.direccion.idlocalidad
                    'CPROV = tercero.direccion.idprovincia -> provincia.subcodigo1

                    Dim telefono As New cls_telefono_
                    telefono.numero = IIf(IsDBNull(row("CTELE")), "", row("CTELE"))
                    telefono.primario = True

                    cliente.tercero.telefono_ = New cls_telefono_
                    cliente.tercero.telefono_.Items = New Collections.Generic.List(Of cls_telefono_)()
                    cliente.tercero.telefono_.Items.Add(telefono)

                    cliente.tercero.observaciones = IIf(IsDBNull(row("CATTE")), "", row("CATTE"))

                    If Not IsDBNull(row("CALTA")) Then
                        cliente.tercero.registro = New cls_registro_
                        cliente.tercero.registro.idusuariocreado = UsuarioLOG.idusuario
                        cliente.tercero.registro.fechamodificado = Now
                        cliente.tercero.registro.idusuariomodificado = UsuarioLOG.idusuario
                        cliente.tercero.registro.idregistroestado = 1
                        cliente.tercero.registro.idusuarioregistroestado = UsuarioLOG.idusuario
                        cliente.tercero.registro.fechacreado = row("CALTA")
                    End If

                    'CALTA = tercero.registro.fechaalta
                    'CNACI = null

                    Dim vendedor_ As New cls_vendedor_
                    If Not IsDBNull(row("CPROD")) Then
                        If vendedor_.BuscarXsubCodigo1(row("CPROD")) Then
                            cliente.idvendedor = vendedor_.idvendedor
                        Else
                            vendedor_.tercero = New cls_tercero_
                            vendedor_.tercero.subcodigo1 = row("CPROD")
                            vendedor_.Nuevo(True)
                            cliente.idvendedor = vendedor_.idvendedor
                        End If
                    End If
                    'CSUBP = null

                    Dim cobrador_ As New cls_cobrador_
                    If Not IsDBNull(row("CCOBR")) Then
                        If cobrador_.BuscarXsubCodigo1(row("CCOBR")) Then
                            cobrador_.idcobrador = cobrador_.idcobrador
                        Else
                            cobrador_.tercero = New cls_tercero_
                            cobrador_.tercero.subcodigo1 = row("CCOBR")
                            cobrador_.Nuevo(True)
                            cliente.idcobrador = cobrador_.idcobrador
                        End If
                    End If

                    'CGRUP = null

                    Dim condicionIva_ As New cls_condicioniva_
                    If Not IsDBNull(row("CCOIV")) Then
                        If condicionIva_.BuscarXsubCodigo1(row("CCOIV")) Then
                            cliente.tercero.idcondicioniva = condicionIva_.idcondicioniva
                        Else
                            condicionIva_.subcodigo1 = row("CCOIV")
                            condicionIva_.idsiglafiscal = idsiglafiscal
                            condicionIva_.Nuevo(True)
                            cliente.tercero.idcondicioniva = condicionIva_.idcondicioniva
                        End If
                    End If

                    cliente.tercero.numeroducumento = IIf(IsDBNull(row("CNUIV")), "", row("CNUIV"))
                    'CMEMO = null

                    Dim formapago_ As New cls_formapago_
                    If Not IsDBNull(row("CFOPA")) Then
                        If formapago_.BuscarXsubCodigo1(row("CFOPA")) Then
                            cliente.idformapago = formapago_.idformapago
                        Else
                            formapago_.subcodigo1 = row("CFOPA")
                            formapago_.Nuevo(True)
                            cliente.idformapago = formapago_.idformapago
                        End If
                    End If
                    'CTARJ = null

                    Dim denominacion As New cls_denominacion_
                    If Not IsDBNull(row("CENCA")) Then
                        If denominacion.BuscarXnombre(row("CENCA")) Then
                            cliente.iddenominacion = denominacion.iddenominacion
                        Else
                            denominacion.nombre = row("CENCA")
                            denominacion.nombrecorto = row("CENCA")
                            denominacion.Nuevo(True)
                            cliente.iddenominacion = denominacion.iddenominacion
                        End If
                    End If

                    cliente.Nuevo()
                End If
                contador += 1
                pgb_general.Invoke(New UpdatePGBCallback(AddressOf UpdatePGB))
                'bsi_estado.Caption = "Syncronizando Clientes... " & contador & "/" & dtt_objeto.Rows.Count
            Next
        Catch ex As Exception
            ErrManagerShow("001025", Me, ex.Message)
        Finally
            RaiseEvent syncFin()
            xlWorkBook.Close()
        End Try
    End Sub

    Private Sub xtf_importarCliente__Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        '    xtf_ABMpoliza.Show()
        Me.Text = "Actualizando Clientes..."
        Dim th As New System.Threading.Thread(AddressOf ImportarDatosDBF)
        th.SetApartmentState(Threading.ApartmentState.STA)
        th.Start()
        pgb_general.Cursor = Cursors.WaitCursor
        ' test()
    End Sub

    Public Delegate Sub FinProcesoCallback()
    Public Sub FinProceso() Handles Me.syncFin
        Me.Invoke(New FinProcesoCallback(AddressOf FinalizarEstado))
    End Sub

    Public Delegate Sub UpdatePGBMAXCallback(ByRef valor As Integer)
    Public Sub UpdatePGBMAX(ByRef valor As Integer)
        pgb_general.Properties.Maximum = valor
    End Sub

    Public Delegate Sub UpdatePGBCallback()
    Public Sub UpdatePGB()
        pgb_general.EditValue = contador
    End Sub

    Private Sub FinalizarEstado()
        Me.Cursor = Cursors.Default
        Me.Close()
    End Sub
    Dim bol_detener As Boolean = False
    Private Sub btn_detener_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_detener.Click
        bol_detener = True
    End Sub
End Class